 /*******************************************************************************
  * Copyright (c) 2000, 2006 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.ui.internal.editors.text;

 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileStore;

 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;

 import org.eclipse.jface.resource.ImageDescriptor;


 import org.eclipse.ui.editors.text.ILocationProvider;

 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;

 /**
  * @since 3.1
  */
 public class NonExistingFileEditorInput implements IEditorInput, ILocationProvider {

     private static int fgNonExisting= 0;

     private IFileStore fFileStore;
     private String fName;

     public NonExistingFileEditorInput(IFileStore fileStore, String namePrefix) {
         Assert.isNotNull(fileStore);
         Assert.isTrue(EFS.SCHEME_FILE.equals(fileStore.getFileSystem().getScheme()));
         fFileStore= fileStore;
         ++fgNonExisting;
         fName= namePrefix + " " + fgNonExisting; //$NON-NLS-1$
 }

     /*
      * @see org.eclipse.ui.IEditorInput#exists()
      */
     public boolean exists() {
         return false;
     }

     /*
      * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
      */
     public ImageDescriptor getImageDescriptor() {
         return null;
     }

     /*
      * @see org.eclipse.ui.IEditorInput#getName()
      */
     public String getName() {
         return fName;
     }

     /*
      * @see org.eclipse.ui.IEditorInput#getPersistable()
      */
     public IPersistableElement getPersistable() {
         return null;
     }

     /*
      * @see org.eclipse.ui.IEditorInput#getToolTipText()
      */
     public String getToolTipText() {
         return fName;
     }

     /*
      * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
      */
     public Object getAdapter(Class adapter) {
         if (ILocationProvider.class.equals(adapter))
             return this;
         return Platform.getAdapterManager().getAdapter(this, adapter);
     }

     /*
      * @see org.eclipse.ui.editors.text.ILocationProvider#getPath(java.lang.Object)
      */
     public IPath getPath(Object element) {
         if (element instanceof NonExistingFileEditorInput) {
             NonExistingFileEditorInput input= (NonExistingFileEditorInput)element;
             return new Path(input.fFileStore.toURI().getPath());
         }
         return null;
     }

     /*
      * @see java.lang.Object#equals(java.lang.Object)
      */
     public boolean equals(Object o) {
         if (o == this)
             return true;

         if (o instanceof NonExistingFileEditorInput) {
             NonExistingFileEditorInput input = (NonExistingFileEditorInput) o;
             return fFileStore.equals(input.fFileStore);
         }

         return false;
     }

     /*
      * @see java.lang.Object#hashCode()
      */
     public int hashCode() {
         return fFileStore.hashCode();
     }
 }

